// https://umijs.org/config/
import pageRoutes from './router.config';

const webpack = require('webpack');
const CompressionWebpackPlugin = require('compression-webpack-plugin');

const prodGzipList = ['js', 'css'];

export default {
  // add for transfer to umi
  antd: {},
  dva: {
    hmr: true,
  },
  targets: {
    ie: 11,
  },
  locale: {
    // default zh-CN
    default: 'zh-CN',
    antd: true,
  },
  dynamicImport: false,
  // 路由配置
  routes: pageRoutes,
  hash: true,
  // Theme for antd
  // https://ant.design/docs/react/customize-theme-cn
  theme: {
    'primary-color': '#1890ff',
  },
  proxy: {
    '/api/': {
      target: process.env.BASE_ROOT,
      // changeOrigin: true,
    },
  },
  analyze: {
    analyzerMode: 'server',
    analyzerPort: 8808,
    openAnalyzer: true,
    // generate stats file while ANALYZE_DUMP exist
    generateStatsFile: true,
    statsFilename: 'stats.json',
    logLevel: 'info',
    defaultSizes: 'parsed', // stat  // gzip
  },
  // ignoreMomentLocale: true,
  manifest: {
    basePath: '/',
  },
  mfsu: { production: { output: '.mfsu-production' } },
  chainWebpack(config) {
    // config.merge({
    //     optimization: {
    //         minimize: true,
    //         splitChunks: {
    //             chunks: 'async',
    //             minSize: 30000,
    //             minChunks: 2,
    //             automaticNameDelimiter: '.',
    //             cacheGroups: {

    //                 echarts: {
    //                   name: "echarts",
    //                   test: /[\\/]node_modules[\\/]echarts[\\/]/,
    //                   chunks: "all",
    //                   priority: 10
    //                 },

    //                 coreJs: {
    //                   name: "coreJs",
    //                   test: /[\\/]node_modules[\\/]core-js[\\/]/,
    //                   chunks: "all",
    //                   priority: 10
    //                 },

    //             }
    //         }
    //     }
    // });

    // 过滤掉momnet的那些不使用的国际化文件

    config
      .plugin('replace')
      .use(webpack.ContextReplacementPlugin)
      .tap(() => {
        return [/moment[/\\]locale$/, /zh-cn/];
      });

    if (process.env.NODE_ENV === 'production') {
      // 生产模式开启
      config.plugin('compression-webpack-plugin').use(
        new CompressionWebpackPlugin({
          // filename: 文件名称，这里我们不设置，让它保持和未压缩的文件同一个名称
          algorithm: 'gzip', // 指定生成gzip格式
          test: new RegExp(`\\.(${prodGzipList.join('|')})$`), // 匹配哪些格式文件需要压缩
          threshold: 10240, // 对超过10k的数据进行压缩
          minRatio: 0.6, // 压缩比例，值为0 ~ 1
        })
      );
    }
  },
};
